// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package com.google.zxing.multi;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.NotFoundException;
import com.google.zxing.Reader;
import com.google.zxing.ReaderException;
import com.google.zxing.Result;
import com.google.zxing.ResultPoint;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
// Referenced classes of package com.google.zxing.multi:
// MultipleBarcodeReader
public final class GenericMultipleBarcodeReader
implements MultipleBarcodeReader
{
private static final int a = 100;
private final Reader b;
public GenericMultipleBarcodeReader(Reader reader)
{
b = reader;
}
private static Result a(Result result, int i, int j)
{
ResultPoint aresultpoint[] = result.getResultPoints();
if (aresultpoint == null)
{
return result;
}
ResultPoint aresultpoint1[] = new ResultPoint[aresultpoint.length];
for (int k = 0; k < aresultpoint.length; k++)
{
ResultPoint resultpoint = aresultpoint[k];
aresultpoint1[k] = new ResultPoint(resultpoint.getX() + (float)i, resultpoint.getY() + (float)j);
}
return new Result(result.getText(), result.getRawBytes(), aresultpoint1, result.getBarcodeFormat());
}
private void a(BinaryBitmap binarybitmap, Map map, List list, int i, int j)
{
boolean flag;
Result result;
Iterator iterator;
ResultPoint aresultpoint[];
int k;
int l;
int i1;
int j1;
ResultPoint resultpoint;
try
{
result = b.decode(binarybitmap, map);
}
catch (ReaderException readerexception)
{
return;
}
iterator = list.iterator();
if (!iterator.hasNext()) goto _L2; else goto _L1
_L1:
if (!((Result)iterator.next()).getText().equals(result.getText()))
{
break MISSING_BLOCK_LABEL_21;
}
flag = true;
_L8:
if (!flag) goto _L4; else goto _L3
_L3:
return;
_L4:
list.add(a(result, i, j));
aresultpoint = result.getResultPoints();
if (aresultpoint == null || aresultpoint.length == 0) goto _L3; else goto _L5
_L5:
k = binarybitmap.getWidth();
l = binarybitmap.getHeight();
float f = k;
float f1 = l;
float f2 = 0.0F;
float f3 = 0.0F;
i1 = aresultpoint.length;
j1 = 0;
while (j1 < i1)
{
resultpoint = aresultpoint[j1];
float f4 = resultpoint.getX();
float f5 = resultpoint.getY();
float f6;
float f7;
if (f4 < f)
{
f6 = f4;
} else
{
f6 = f;
}
if (f5 < f1)
{
f7 = f5;
} else
{
f7 = f1;
}
if (f4 <= f2)
{
f4 = f2;
}
if (f5 <= f3)
{
f5 = f3;
}
j1++;
f3 = f5;
f2 = f4;
f1 = f7;
f = f6;
}
if (f > 100F)
{
a(binarybitmap.crop(0, 0, (int)f, l), map, list, i, j);
}
if (f1 > 100F)
{
a(binarybitmap.crop(0, 0, k, (int)f1), map, list, i, j);
}
if (f2 < (float)(k - 100))
{
a(binarybitmap.crop((int)f2, 0, k - (int)f2, l), map, list, i + (int)f2, j);
}
if (f3 >= (float)(l - 100)) goto _L3; else goto _L6
_L6:
a(binarybitmap.crop(0, (int)f3, k, l - (int)f3), map, list, i, j + (int)f3);
return;
_L2:
flag = false;
if (true) goto _L8; else goto _L7
_L7:
}
public Result[] decodeMultiple(BinaryBitmap binarybitmap)
{
return decodeMultiple(binarybitmap, null);
}
public Result[] decodeMultiple(BinaryBitmap binarybitmap, Map map)
{
ArrayList arraylist = new ArrayList();
a(binarybitmap, map, arraylist, 0, 0);
if (arraylist.isEmpty())
{
throw NotFoundException.getNotFoundInstance();
} else
{
return (Result[])arraylist.toArray(new Result[arraylist.size()]);
}
}
}